﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using LoungeRepo.Contracts.Core;

namespace Test.LoungeRepo.Normalizer
{
    struct SimpleStruct
    {
        public int I;
        public string S;
    }


    class Simple
    {
        public string Text;

    }

    class Node
    {
        public string Text;
        [NonSerialized]
        public string Comment;
        public Node Child;
    }

    class Scalars
    {
        public bool _bool;
        public byte _byte;
        public sbyte _sbyte;

        public char _char;
        public decimal _decimal;
        public double _double;

        public float _float;
        public int _int;
        public uint _uint;

        public long _long;
        public ulong _ulong;

        public short _short;
        public ushort _ushort;

        public string _string;
    }

    class SpecialSimpleTypes
    {
        public DateTime dt;
        public BindingFlags e;
    }


    class ObjectWithSimleTypeArray
    {
        public int[] IntArray;
    }


    class ObjectWithStruct
    {
        public SimpleStruct S;
    }


    class EntityNode : ILoungeRepoEntityIdentity
    {
        private string _id, _partition;

        #region Implementation of ILoungeRepoEntityIdentity
        public string Id { get { return _id; } set { _id = value; } }
        public string Partition { get { return _partition; } set { _partition = value; } }
        #endregion

        public EntityNode Next;
    }


    class ObjectReferencingEntities
    {
        public EntityNode E1, E2;
    }


    class StringEntity : ILoungeRepoEntityIdentity
    {
        #region Implementation of ILoungeRepoEntityIdentity
        public string Id
        {
            get { return "myid"; }
        }

        public string Partition
        {
            get { return "mypartition"; }
        }
        #endregion

        public string Text;
    }


    class CollectionEntity : ILoungeRepoEntityIdentity
    {
        public string Id { get; set; }
        public string Partition { get; set; }

        public Dictionary<int, string> Dict = new Dictionary<int, string>();
    }
}
